package com.hyh.ad.common.exceptionhandler;

import cn.hutool.core.date.DateTime;
import com.hyh.ad.common.core.domain.AjaxResult;
import com.hyh.ad.common.exceptions.BusinessException;
import com.hyh.ad.common.exceptions.SystemException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;


/**
 * 异常处理切面
 * 处理BusinessException异常
 * 处理SystemException异常
 * @author hyh
 */

@Slf4j
@RestControllerAdvice
public class ProjectExceptionAdvice {
    /**
     * @param  e
     * @return 业务异常处理的信息
     */
    @ExceptionHandler(BusinessException.class)
    public AjaxResult handleBusinessException(BusinessException e) {
        //记录日志
        log.error(e.getMessage(), e);
        //返回错误信息
        return AjaxResult.error(e.getCode(), e.getMessage());
    }

    /**
     * @param  e
     * @return 系统异常处理的信息
     */
    @ExceptionHandler(SystemException.class)
    public AjaxResult handleSystemException(BusinessException e) {
        //记录日志
        log.error(e.getMessage(), e);
        //返回错误信息
        return AjaxResult.error(e.getCode(), e.getMessage());
    }

    /**
     * @param  e
     * @return 自定义异常处理的信息
     */
    @ExceptionHandler(Exception.class)
    public AjaxResult doException(Exception e) {
        //记录日志
        log.error(e.getMessage(), e);
        //返回错误信息
        return AjaxResult.error(e.getMessage() + DateTime.now());
    }
}
